/*
 * Auto generated C++ header for Mass Effect 2.
 *	by _silencer.
 */

#ifndef UNREAL_SDK_GAME_SFXGameContent_Powers_H
#define UNREAL_SDK_GAME_SFXGameContent_Powers_H

#include "unreal_game_global.h"

namespace game
{
	using namespace unreal;

	class SFXGameEffect_PowerBonus: public SFXGameEffect
	{
		DECLARE_PACKAGE_CLASS( SFXGameEffect_PowerBonus, SFXGameEffect, SFXGameContent_Powers )

	public:

		Class* PowerClass; //offset = 104, size = 4
	};

	class BioWeaponPowerScript: public BioPowerScriptDesign
	{
		DECLARE_PACKAGE_CLASS( BioWeaponPowerScript, BioPowerScriptDesign, SFXGameContent_Powers )

	public:

		Bool bModifyTracer: 1; //offset = 192, size = 4
		Bool bModifyImpactVFX: 1; //offset = 192, size = 4
		Bool bModifyMuzzle: 1; //offset = 192, size = 4
		StaticMesh* oTracer; //offset = 196, size = 4
		ParticleSystem* oImpactVFX; //offset = 200, size = 4
		ParticleSystem* oMuzzleVFX; //offset = 204, size = 4
		ParticleSystem* oMuzzleLoopVFX; //offset = 208, size = 4
		Class* WeaponPowerEffectClass; //offset = 212, size = 4
		NotRecommended_HeavyWeaponEquipped NotRecommended_HeavyWeaponEquipped; //offset = 216, size = 4
		Actor* m_oCaster; //offset = 220, size = 4

		Bool ShouldUsePower( Actor* Caster, Actor* Target, String sOptionalInfo, Pawn* CasterAsPawn, SFXWeapon* Weapon, SFXModule_GameEffectManager* Manager, SFXGameEffect* Effect );
		void ApplyPowerEffects( BioPawn* oPawn, SFXWeapon* oWeapon );
		Bool SetWeaponPower( BioPawn* oPawn, SFXWeapon* oWeapon, Bool bOverrideCurrentPower, SFXHeavyWeapon* oHeavyWeapon, SFXModule_GameEffectManager* Manager, SFXGameEffect_WeaponVFXChange* WeaponVFXEffect );
		void ReloadAmmoPower( BioPawn* Target, SFXWeapon* Weapon );
		Bool StartPhase( Byte ePhase, Actor* oCaster, Float fDuration, BioPawn* oCasterPawn, BioPawn* oSquadMember, BioBaseSquad* oSquad, Int Index );
		Bool ApplyToSquadMembers();
		Float GetDuration();
		Float GetElapsedTime();
		Bool CanStartPower( Actor* oCaster, BioPawn* CasterAsPawn );
	};

	class SFXGameEffect_AmmoPower: public SFXGameEffect
	{
		DECLARE_PACKAGE_CLASS( SFXGameEffect_AmmoPower, SFXGameEffect, SFXGameContent_Powers )

	public:

		ParticleSystem* HologramTemplate; //offset = 104, size = 4
		ParticleSystem* IconTemplate; //offset = 108, size = 4
		Float BulletsPerSecond; //offset = 112, size = 4
		Bool bWeaponUnequipped: 1; //offset = 116, size = 4
		SFXWeapon* OwnerWeapon; //offset = 120, size = 4
		BioPawn* OwnerPawn; //offset = 124, size = 4
		WwiseEvent* NormalImpactSound; //offset = 128, size = 4
		WwiseEvent* WeaponFireSound; //offset = 132, size = 4

		void RemoveWeaponHologram();
		void EnableWeaponHologram();
		void OnWeaponUnequip( SFXWeapon* Weapon );
		void OnWeaponEquip( SFXWeapon* Weapon );
		void OnWeaponReload( SFXWeapon* Weapon );
		Float GetDamageVocProbabilityMod();
		void OnWeaponImpact( SFXWeapon* Weapon, ImpactInfo Impact );
		void OnRemoved( BioPawn* oPawn );
		void OnApplied();
	};

	class SFXPower_IncendiaryAmmo: public SFXPower
	{
		DECLARE_PACKAGE_CLASS( SFXPower_IncendiaryAmmo, SFXPower, SFXGameContent_Powers )

	public:

		Float AreaExplosionRadius; //offset = 332, size = 4
		Float AreaExplosionChance; //offset = 336, size = 4
		Float AreaExplosionDamage; //offset = 340, size = 4
		Bool bSquadPower: 1; //offset = 344, size = 4
		Bool bSpawnImpactFlames: 1; //offset = 344, size = 4
		Array<Float> ReactionChance; //offset = 348, size = 12
		Float RobotDamageMultiplier; //offset = 360, size = 4
		Float fFlameDuration; //offset = 364, size = 4
	};

	class SFXGameEffect_IncendiaryAmmo: public SFXGameEffect_AmmoPower
	{
		DECLARE_PACKAGE_CLASS( SFXGameEffect_IncendiaryAmmo, SFXGameEffect_AmmoPower, SFXGameContent_Powers )

	public:

		Float AreaExplosionChance; //offset = 136, size = 4
		Float AreaExplosionDamage; //offset = 140, size = 4
		Float AreaExplosionRadius; //offset = 144, size = 4
		Float RobotDamageMultiplier; //offset = 148, size = 4
		Float AnimatedReactionChance; //offset = 152, size = 4
		Float Damage; //offset = 156, size = 4
		Bool bSpawnImpactFlames: 1; //offset = 160, size = 4
		Float DamageDuration; //offset = 164, size = 4
		ParticleSystem* PS_ImpactEffect; //offset = 168, size = 4
		ParticleSystem* PS_FlameEffect; //offset = 172, size = 4
		ParticleSystem* PS_FireSpreadEffect; //offset = 176, size = 4

		void CauseAnimatedReaction( Actor* oHitActor, Float fDelay, BioPawn* oPawn, SFXModule_GameEffectManager* Manager, SFXGameEffect_DelayedCustomAction* oEffect, Float Random );
		void AddGameEffects( Actor* oTarget, Float fDuration, Float fDamagePerSecond, BioPawn* BPInstigator, SFXModule_GameEffectManager* Manager, SFXGameEffect_HeavyFireDamage* Effect );
		void DoEvolvedAoEImpact( ImpactInfo Impact, BioPawn* WeaponOwner, SFXWeapon* Weapon, BioPawn* oNearbyPawn, BioPawn* oPawn, BioPlayerSquad* oPlayerSquad, Int nImpactedCount, Float fDelay, Float fDamage, Float fAnimatedReactionChance );
		Float GetDamageVocProbabilityMod();
		void OnWeaponImpact( SFXWeapon* Weapon, ImpactInfo Impact, BioPawn* oPawn, Actor* oHitActor, Float fExtraDamage, BioPawn* WeaponOwner, Float fAnimatedReactionChance );
	};

	class BioCarnageScript: public BioWeaponPowerScript
	{
		DECLARE_PACKAGE_CLASS( BioCarnageScript, BioWeaponPowerScript, SFXGameContent_Powers )

	public:

		SFXPower_IncendiaryAmmo* m_oPower; //offset = 224, size = 4

		void ApplyPowerEffects( BioPawn* oPawn, SFXWeapon* oWeapon, SFXModule_GameEffectManager* Manager, SFXGameEffect_IncendiaryAmmo* oEffect );
		Bool OnImpact( Actor* oCaster, Float fCasterStability, Actor* oImpacted, Int nPreviouslyImpacted, Bool bSuccess, Pawn* oPawn );
		Bool StartPhase( Byte ePhase, Actor* oCaster, Float fDuration );
		Bool ApplyToSquadMembers();
		void InitializePowerScript();
	};

	class SFXPower_ConcussiveShot: public SFXPower
	{
		DECLARE_PACKAGE_CLASS( SFXPower_ConcussiveShot, SFXPower, SFXGameContent_Powers )

	public:

		Bool bSingleTarget: 1; //offset = 332, size = 4
		Float PhysicsImpactDamageMult; //offset = 336, size = 4
	};

	class BioConcussiveShotScript: public BioPowerScriptDesign
	{
		DECLARE_PACKAGE_CLASS( BioConcussiveShotScript, BioPowerScriptDesign, SFXGameContent_Powers )

	public:

		SFXPower_ConcussiveShot* m_oPower; //offset = 192, size = 4
		Array<Byte> AnimatedReactions; //offset = 196, size = 12
		WwiseEvent* NormalImpactSound; //offset = 208, size = 4
		Name BoneName; //offset = 212, size = 8

		Bool ShouldUsePower( Actor* Caster, Actor* Target, String sOptionalInfo, BioPawn* oPawn );
		void OnRagdollPhysicsImpact( Pawn* oPawn, Actor* oImpactActor, Vector vImpactDir, BioPawn* oBioPawn );
		Bool OnImpact( Actor* oCaster, Float fCasterStability, Actor* oImpacted, Int nPreviouslyImpacted, BioPawn* oPawn, BioPawn* oCasterPawn, Vector vDirection, Vector HitLocation, Vector vMomentum, SFXModule_GameEffectManager* Manager );
		Bool StartPhase( Byte ePhase, Actor* oCaster, Float fDuration );
	};

	class SFXPower_DisruptorAmmo: public SFXPower
	{
		DECLARE_PACKAGE_CLASS( SFXPower_DisruptorAmmo, SFXPower, SFXGameContent_Powers )

	public:

		Bool bSquadPower: 1; //offset = 332, size = 4
		Bool bExplodesRobots: 1; //offset = 332, size = 4
		Array<Float> RobotStunChance; //offset = 336, size = 12
		Array<Float> RobotStunLength; //offset = 348, size = 12
		Array<Float> OverheatChance; //offset = 360, size = 12
		Array<Float> OverheatLength; //offset = 372, size = 12
	};

	class SFXGameEffect_DisruptorAmmo: public SFXGameEffect_AmmoPower
	{
		DECLARE_PACKAGE_CLASS( SFXGameEffect_DisruptorAmmo, SFXGameEffect_AmmoPower, SFXGameContent_Powers )

	public:

		Bool bExplodesRobots: 1; //offset = 136, size = 4
		Float RobotReactionChance; //offset = 140, size = 4
		Float OverheatChance; //offset = 144, size = 4
		Float OverheatLength; //offset = 148, size = 4
		Float Damage; //offset = 152, size = 4
		Float RobotStunLength; //offset = 156, size = 4
		BioVFXTemplate* StunCrustEffect; //offset = 160, size = 4

		void StunRobot( BioPawn* oPawn, Float fStunLength, Int PhysicsLevel, BioVisualEffect* Effect );
		void TurnOnDeathPower( BioPawn* oPawn );
		Float GetDamageVocProbabilityMod();
		void OnWeaponImpact( SFXWeapon* Weapon, ImpactInfo Impact, BioPawn* oPawn, Vector HitLocation, Vector Momentum, Float fDamage, BioPawn* oCasterPawn, Bool bIsRobot, Class* DamageClass, Float fRobotReactionChance, Float fOverheatChance, Float fOverheatLength, Float fPhysLevelResistance );
	};

	class BioOverloadScript: public BioWeaponPowerScript
	{
		DECLARE_PACKAGE_CLASS( BioOverloadScript, BioWeaponPowerScript, SFXGameContent_Powers )

	public:

		SFXPower_DisruptorAmmo* m_oPower; //offset = 224, size = 4

		void ApplyPowerEffects( BioPawn* oPawn, SFXWeapon* oWeapon, SFXModule_GameEffectManager* Manager, SFXGameEffect_DisruptorAmmo* oEffect );
		Bool OnImpact( Actor* oCaster, Float fCasterStability, Actor* oImpacted, Int nPreviouslyImpacted, Bool bSuccess, Pawn* oPawn );
		Bool StartPhase( Byte ePhase, Actor* oCaster, Float fDuration );
		Bool ApplyToSquadMembers();
		void InitializePowerScript();
	};

	class BioReactionPowerScript: public BioPowerScriptDesign
	{
		DECLARE_PACKAGE_CLASS( BioReactionPowerScript, BioPowerScriptDesign, SFXGameContent_Powers )

	public:

		Byte Rank1Reactions[6]; //offset = 192, size = 1
		Byte Rank2Reactions[6]; //offset = 198, size = 1
		Byte Rank3Reactions[6]; //offset = 204, size = 1
		Byte Rank4Reactions[6]; //offset = 210, size = 1

		Byte GetIncreasedReaction( Actor* oTarget, Byte Reaction );
		Byte GetCombatReaction( Int PowerRank, Actor* oTarget, Bool ReactionStacks, Int TargetPhysicsLevel, Byte Reaction );
	};

	class SFXPower_PlayerMelee: public SFXPower
	{
		DECLARE_PACKAGE_CLASS( SFXPower_PlayerMelee, SFXPower, SFXGameContent_Powers )

	public:

		WwiseEvent* WwiseImpactEvent; //offset = 332, size = 4
		Int MaxPhysicsLevel; //offset = 336, size = 4
	};

	class BioPlayerMeleeScript: public BioReactionPowerScript
	{
		DECLARE_PACKAGE_CLASS( BioPlayerMeleeScript, BioReactionPowerScript, SFXGameContent_Powers )

	public:

		Float RecentlyMeleedTime; //offset = 216, size = 4
		Float MeleeCooldown; //offset = 220, size = 4
		Vector m_vCasterLocation; //offset = 224, size = 12
		ScreenShakeStruct Shake; //offset = 236, size = 112
		InterpCurveFloat SlowDown; //offset = 348, size = 16
		ForceFeedbackWaveform* PlayerPerformsMeleeWaveForm; //offset = 364, size = 4
		ForceFeedbackWaveform* PlayerIsMeleedWaveForm; //offset = 368, size = 4
		SFXPower_PlayerMelee* m_oPower; //offset = 372, size = 4
		Vector LungeDirection; //offset = 376, size = 12

		Bool EndPhase( Byte ePhase, Actor* oCaster );
		void RemoveMeleeEffects( BioPawn* oPawn, SFXModule_GameEffectManager* Manager );
		Bool OnImpact( Actor* oCaster, Float fCasterStability, Actor* oImpacted, Int nPreviouslyImpacted, Vector vMomentum, Vector HitLocation, BioPlayerController* pController, BioWorldInfo* pWorldInfo, BioPawn* oPawn, BioPawn* oCasterPawn, SFXModule_GameEffectManager* GEModule, Float fDamage, BioPlayerController* oPlayerController, SFXAI_Core* AI, SFXModule_GameEffectManager* TargetGEModule, Int nMaxPhysicsLevel, Bool bIsRobot, Array<Byte> Parts );
		void Tick( Float DeltaTime );
		Bool StartPhase( Byte ePhase, Actor* oCaster, Float fDuration, BioPlayerController* Controller, Vector EnemyDirection );
	};

	class SFXDamageType_CombatDroneShock: public SFXDamageType
	{
		DECLARE_PACKAGE_CLASS( SFXDamageType_CombatDroneShock, SFXDamageType, SFXGameContent_Powers )

	public:
	};

	class SFXDamageType_CryoAmmo: public SFXDamageType
	{
		DECLARE_PACKAGE_CLASS( SFXDamageType_CryoAmmo, SFXDamageType, SFXGameContent_Powers )

	public:
	};

	class SFXGameEffect_CryoAmmo: public SFXGameEffect_AmmoPower
	{
		DECLARE_PACKAGE_CLASS( SFXGameEffect_CryoAmmo, SFXGameEffect_AmmoPower, SFXGameContent_Powers )

	public:

		Float Damage; //offset = 136, size = 4
		Float FreezeChance; //offset = 140, size = 4
		Float FreezeDuration; //offset = 144, size = 4
		ParticleSystem* ImpactEffect; //offset = 148, size = 4

		Float GetDamageVocProbabilityMod();
		void OnWeaponImpact( SFXWeapon* Weapon, ImpactInfo Impact, BioPawn* oPawn, Actor* oHitActor, BioPawn* WeaponOwner, Float fDamage, SFXModule_GameEffectManager* Manager, SFXGameEffect_DelayedCryoFreeze* FreezeEffect, Float fScaledFreezeChance, Float fScaledFreezeDuration, Float fPhysLevelResistance, Float fDelay );
	};

	class SFXPawn_EngineerCombatDrone: public SFXPawn
	{
		DECLARE_PACKAGE_CLASS( SFXPawn_EngineerCombatDrone, SFXPawn, SFXGameContent_Powers )

	public:

		BioPawn* Caster; //offset = 2156, size = 4
		ParticleSystemComponent* PSC_Active; //offset = 2160, size = 4
		ParticleSystemComponent* PSC_Spawn; //offset = 2164, size = 4
		ParticleSystem* PS_DeathVFX; //offset = 2168, size = 4
		Bool bCustomColor: 1; //offset = 2172, size = 4
		Bool bCustomColor2: 1; //offset = 2172, size = 4
		Vector DroneColor; //offset = 2176, size = 12
		Vector DroneColor2; //offset = 2188, size = 12
		__OnDroneKilled__Delegate __OnDroneKilled__Delegate; //offset = 2200, size = 12

		void PlayDeathVocalization( BioPawn* Killer );
		void Destroyed( SFXGame* oGame, SFXObjectPool* oPool, Vector DirectionToSprayParticles, Emitter* oEmitter, SFXModule_Damage* DamageModule, SFXAI_Core* oAI );
		Bool Died( Controller* Killer, Class* DamageType, Vector HitLocation );
		void SetDroneColor2( Vector NewColor );
		void SetDroneColor( Vector NewColor );
		void PostBeginPlay();
		void OnDroneKilled();
	};

	class SFXGameEffect_OverheatWeapons: public SFXGameEffect
	{
		DECLARE_PACKAGE_CLASS( SFXGameEffect_OverheatWeapons, SFXGameEffect, SFXGameContent_Powers )

	public:

		BioPawn* Pawn; //offset = 104, size = 4
		SFXWeapon* Weapon; //offset = 108, size = 4
		Float OverheatFrequency; //offset = 112, size = 4
		Float OverheatTimer; //offset = 116, size = 4
		ParticleSystemComponent* OverheatPSCO; //offset = 120, size = 4

		void OnRemoved();
		void OverheatWeapon( SFXWeapon* oWeapon, SFXModule_GameEffectManager* Manager );
		void OnUpdate( Float DeltaSeconds );
		void OnApplied( SFXGame* oGame, SkeletalMeshComponent* oSkeletalMesh );
	};

	class SFXPower_AdrenalineRush: public SFXPower
	{
		DECLARE_PACKAGE_CLASS( SFXPower_AdrenalineRush, SFXPower, SFXGameContent_Powers )

	public:

		BioVFXTemplate* CrustEffect; //offset = 332, size = 4
		BioVFXTemplate* FramebufferEffect; //offset = 336, size = 4
		Array<Float> TimeDilation; //offset = 340, size = 12
		Array<Float> WeaponDamageBonus; //offset = 352, size = 12
		Float ArmorBonus; //offset = 364, size = 4
	};

	class SFXPowerScript_AdrenalineRush: public BioPowerScriptDesign
	{
		DECLARE_PACKAGE_CLASS( SFXPowerScript_AdrenalineRush, BioPowerScriptDesign, SFXGameContent_Powers )

	public:

		SFXPower_AdrenalineRush* m_oPower; //offset = 192, size = 4
		Bool bEffectEnded: 1; //offset = 196, size = 4

		void ApplyVFX( Actor* oImpacted, Float fDuration, BioVisualEffect* Effect );
		void OnEffectEnded( Float fCooldown );
		Bool OnImpact( Actor* oCaster, Float fCasterStability, Actor* oImpacted, Int nPreviouslyImpacted, BioPawn* oImpactedPawn, Float fDuration, Float fTimeDilation, Float fWeaponDamageBonus );
		Bool AdjustCooldown( Float fCoolDownTime );
		Bool StartPhase( Byte ePhase, Actor* oCaster, Float fDuration );
	};

	class SFXPower_AdrenalineRush_Evolved1: public SFXPower_AdrenalineRush
	{
		DECLARE_PACKAGE_CLASS( SFXPower_AdrenalineRush_Evolved1, SFXPower_AdrenalineRush, SFXGameContent_Powers )

	public:
	};

	class SFXPower_AdrenalineRush_Evolved2: public SFXPower_AdrenalineRush
	{
		DECLARE_PACKAGE_CLASS( SFXPower_AdrenalineRush_Evolved2, SFXPower_AdrenalineRush, SFXGameContent_Powers )

	public:
	};

	class SFXPower_AdrenalineRush_Soldier: public SFXPower_AdrenalineRush
	{
		DECLARE_PACKAGE_CLASS( SFXPower_AdrenalineRush_Soldier, SFXPower_AdrenalineRush, SFXGameContent_Powers )

	public:
	};

	class SFXPower_CombatDroneAttack: public SFXPower
	{
		DECLARE_PACKAGE_CLASS( SFXPower_CombatDroneAttack, SFXPower, SFXGameContent_Powers )

	public:

		Bool bPlayAnimatedReaction: 1; //offset = 332, size = 4
		Array<Byte> AnimatedReactions; //offset = 336, size = 12
		Class* DamageClass; //offset = 348, size = 4
	};

	class SFXPowerScript_CombatDroneAttack: public BioPowerScriptDesign
	{
		DECLARE_PACKAGE_CLASS( SFXPowerScript_CombatDroneAttack, BioPowerScriptDesign, SFXGameContent_Powers )

	public:

		SFXPower_CombatDroneAttack* m_oPower; //offset = 192, size = 4
		ForceFeedbackWaveform* PlayerIsMeleedWaveForm; //offset = 196, size = 4
		WwiseEvent* NormalImpactSound; //offset = 200, size = 4

		Bool ShouldUsePower( Actor* Caster, Actor* Target, String sOptionalInfo );
		Bool OnImpact( Actor* oCaster, Float fCasterStability, Actor* oImpacted, Int nPreviouslyImpacted, BioPawn* oPawn, BioPawn* oCasterPawn, BioWorldInfo* pWorldInfo, BioPlayerController* pController, SFXAI_Core* oController );
		Bool StartPhase( Byte ePhase, Actor* oCaster, Float fDuration );
	};

	class SFXPower_CombatDroneDeath: public SFXPower
	{
		DECLARE_PACKAGE_CLASS( SFXPower_CombatDroneDeath, SFXPower, SFXGameContent_Powers )

	public:
	};

	class SFXPowerScript_CombatDroneDeath: public BioPowerScriptDesign
	{
		DECLARE_PACKAGE_CLASS( SFXPowerScript_CombatDroneDeath, BioPowerScriptDesign, SFXGameContent_Powers )

	public:

		SFXPower_CombatDroneDeath* m_oPower; //offset = 192, size = 4
		ParticleSystem* PS_DeathVFX; //offset = 196, size = 4

		Bool OnImpact( Actor* oCaster, Float fCasterStability, Actor* oImpacted, Int nPreviouslyImpacted, SFXGame* oGame, SFXObjectPool* oPool, Vector DirectionToSprayParticles, Emitter* oEmitter, SFXPawn_EngineerCombatDrone* CombatDrone );
		Bool StartPhase( Byte ePhase, Actor* oCaster, Float fDuration );
	};

	class SFXPower_CombatDroneShock: public SFXPower_CombatDroneAttack
	{
		DECLARE_PACKAGE_CLASS( SFXPower_CombatDroneShock, SFXPower_CombatDroneAttack, SFXGameContent_Powers )

	public:
	};

	class SFXProjectile_Power_Seeking: public SFXProjectile_Power
	{
		DECLARE_PACKAGE_CLASS( SFXProjectile_Power_Seeking, SFXProjectile_Power, SFXGameContent_Powers )

	public:

		Actor* AcquiredTarget; //offset = 800, size = 4
		Float TimeAlive; //offset = 804, size = 4
		Float CurveShape; //offset = 808, size = 4
		Quat StartRotation; //offset = 812, size = 16
		Bool bExplodeNextFrame: 1; //offset = 828, size = 4
		Float UpperBound; //offset = 832, size = 4
		Float InterpRate; //offset = 836, size = 4

		void Recycle();
		void InitializeRotation( Pawn* oCasterPawn );
		Bool InitializePowerProjectile( Actor* oCaster, Float fTravelSpeed, Float fRadius, BioPower* oPower, Pawn* oCasterPawn );
		Bool CanLockOn( Actor* Target, Pawn* CasterPawn, KActor* oKActor, SFXSelectionModule* Module, BioPawn* oPawn );
		void Tick( Float DeltaTime, Quat Q, Vector V, Float Dist );
		Bool ShouldModifyVelocity();
		Float ChordLength( Float ChordLen, Float Theta, Float CircleRadius );
		Vector GetAimLocation( Actor* Target, Vector AimLocation, BioPawn* oPawn );
		void AcquireTarget( Actor* Target, Vector V, Float Dist, Float RadsToTarget, Quat Q );
	};

	class SFXProjectile_Power_ConcussiveShot: public SFXProjectile_Power_Seeking
	{
		DECLARE_PACKAGE_CLASS( SFXProjectile_Power_ConcussiveShot, SFXProjectile_Power_Seeking, SFXGameContent_Powers )

	public:
	};

	class SFXPower_ConcussiveShot_Heavy: public SFXPower_ConcussiveShot
	{
		DECLARE_PACKAGE_CLASS( SFXPower_ConcussiveShot_Heavy, SFXPower_ConcussiveShot, SFXGameContent_Powers )

	public:
	};

	class SFXPower_ConcussiveShot_Radius: public SFXPower_ConcussiveShot
	{
		DECLARE_PACKAGE_CLASS( SFXPower_ConcussiveShot_Radius, SFXPower_ConcussiveShot, SFXGameContent_Powers )

	public:
	};

	class SFXPower_ConcussiveShot_Soldier: public SFXPower_ConcussiveShot
	{
		DECLARE_PACKAGE_CLASS( SFXPower_ConcussiveShot_Soldier, SFXPower_ConcussiveShot, SFXGameContent_Powers )

	public:
	};

	class SFXPower_CryoAmmo: public SFXPower
	{
		DECLARE_PACKAGE_CLASS( SFXPower_CryoAmmo, SFXPower, SFXGameContent_Powers )

	public:

		Bool bSquadPower: 1; //offset = 332, size = 4
		Array<Float> FreezeChance; //offset = 336, size = 12
	};

	class SFXPowerScript_CryoAmmo: public BioWeaponPowerScript
	{
		DECLARE_PACKAGE_CLASS( SFXPowerScript_CryoAmmo, BioWeaponPowerScript, SFXGameContent_Powers )

	public:

		SFXPower_CryoAmmo* m_oPower; //offset = 224, size = 4

		void ApplyPowerEffects( BioPawn* oPawn, SFXWeapon* oWeapon, SFXModule_GameEffectManager* Manager, SFXGameEffect_CryoAmmo* oEffect );
		Bool StartPhase( Byte ePhase, Actor* oCaster, Float fDuration );
		Bool ApplyToSquadMembers();
		void InitializePowerScript();
	};

	class SFXPower_CryoAmmo_Evolved1: public SFXPower_CryoAmmo
	{
		DECLARE_PACKAGE_CLASS( SFXPower_CryoAmmo_Evolved1, SFXPower_CryoAmmo, SFXGameContent_Powers )

	public:
	};

	class SFXPower_CryoAmmo_Evolved2: public SFXPower_CryoAmmo
	{
		DECLARE_PACKAGE_CLASS( SFXPower_CryoAmmo_Evolved2, SFXPower_CryoAmmo, SFXGameContent_Powers )

	public:
	};

	class SFXPower_CryoAmmo_Soldier: public SFXPower_CryoAmmo
	{
		DECLARE_PACKAGE_CLASS( SFXPower_CryoAmmo_Soldier, SFXPower_CryoAmmo, SFXGameContent_Powers )

	public:
	};

	class SFXPower_IncendiaryAmmo_Soldier: public SFXPower_IncendiaryAmmo
	{
		DECLARE_PACKAGE_CLASS( SFXPower_IncendiaryAmmo_Soldier, SFXPower_IncendiaryAmmo, SFXGameContent_Powers )

	public:
	};

	class SFXPower_IncendiaryAmmo_Squad: public SFXPower_IncendiaryAmmo
	{
		DECLARE_PACKAGE_CLASS( SFXPower_IncendiaryAmmo_Squad, SFXPower_IncendiaryAmmo, SFXGameContent_Powers )

	public:
	};

	class SFXPower_IncendiaryAmmo_Radius: public SFXPower_IncendiaryAmmo
	{
		DECLARE_PACKAGE_CLASS( SFXPower_IncendiaryAmmo_Radius, SFXPower_IncendiaryAmmo, SFXGameContent_Powers )

	public:
	};

	class SFXPower_DisruptorAmmo_Heavy: public SFXPower_DisruptorAmmo
	{
		DECLARE_PACKAGE_CLASS( SFXPower_DisruptorAmmo_Heavy, SFXPower_DisruptorAmmo, SFXGameContent_Powers )

	public:
	};

	class SFXPower_DisruptorAmmo_Squad: public SFXPower_DisruptorAmmo
	{
		DECLARE_PACKAGE_CLASS( SFXPower_DisruptorAmmo_Squad, SFXPower_DisruptorAmmo, SFXGameContent_Powers )

	public:
	};

	class SFXPower_DisruptorAmmo_Soldier: public SFXPower_DisruptorAmmo
	{
		DECLARE_PACKAGE_CLASS( SFXPower_DisruptorAmmo_Soldier, SFXPower_DisruptorAmmo, SFXGameContent_Powers )

	public:
	};

	class SFXPower_FirstAid: public SFXPower
	{
		DECLARE_PACKAGE_CLASS( SFXPower_FirstAid, SFXPower, SFXGameContent_Powers )

	public:
	};

	class SFXPowerScript_FirstAid: public BioPowerScriptDesign
	{
		DECLARE_PACKAGE_CLASS( SFXPowerScript_FirstAid, BioPowerScriptDesign, SFXGameContent_Powers )

	public:

		SFXPower_FirstAid* m_oPower; //offset = 192, size = 4
		BioVFXTemplate* m_oCrustEffect; //offset = 196, size = 4

		String GetHUDWheelIconInfo( BioPawn* OwnerPawn, BioEpicPawnBehavior* oBehavior, BioPlayerSquad* oPlayerSquad, Int nCount );
		Bool ShouldUsePower( Actor* Caster, Actor* Target, String sOptionalInfo, BioPawn* BioCaster, BioEpicPawnBehavior* oBehavior, BioPawn* BioMember, BioAiController* oController, BioPlayerSquad* oPlayerSquad, Int Index );
		Int CountMediGel( BioPlayerSquad* oPlayerSquad, SFXInventoryManager* oInventory, Int nCurrentAmount );
		Bool OnImpact( Actor* oCaster, Float fCasterStability, Actor* oImpacted, Int nPreviouslyImpacted, BioPawn* BioCaster, BioPawn* BioMember, BioVisualEffect* Effect, Bool bActionTaken, Bool bApplyCrust, Int nHealCount, Int Index );
		Bool StartPhase( Byte ePhase, Actor* oCaster, Float fDuration );
		Bool CanStartPower( Actor* oCaster, String EmptyString );
	};

	class SFXPower_PlayerMeleePistol: public SFXPower_PlayerMelee
	{
		DECLARE_PACKAGE_CLASS( SFXPower_PlayerMeleePistol, SFXPower_PlayerMelee, SFXGameContent_Powers )

	public:
	};

	class SFXPower_SoldierPassive: public SFXPower_PassivePower
	{
		DECLARE_PACKAGE_CLASS( SFXPower_SoldierPassive, SFXPower_PassivePower, SFXGameContent_Powers )

	public:

		Array<Float> HealthBonus; //offset = 344, size = 12
		Array<Float> WeaponDamageBonus; //offset = 356, size = 12
		Array<Float> StormTimeDilation; //offset = 368, size = 12
		Array<Float> PowerDurationIncrease; //offset = 380, size = 12
		Array<Float> PowerDamageIncrease; //offset = 392, size = 12
	};

	class SFXPowerScript_PassivePower: public BioPowerScriptDesign
	{
		DECLARE_PACKAGE_CLASS( SFXPowerScript_PassivePower, BioPowerScriptDesign, SFXGameContent_Powers )

	public:

		void RemovePowerBonusEffect( Actor* oTarget, Class* ClassName, Name nmCategory, Class* PowerClass, SFXModule_GameEffectManager* Manager, SFXGameEffect_PowerBonus* Effect, Int nIndex );
		void ApplyPowerBonusEffect( Actor* oTarget, Class* ClassName, Float fEffectValue, Name nmCategory, Class* PowerClass, SFXModule_GameEffectManager* Manager, SFXGameEffect_PowerBonus* Effect );
		void ApplyHealthModifier( Float fHealthModifier, Actor* Target );
		void ApplyWeaponDamageModifier( Float fDamageModifier, Actor* Target );
		void ApplyPowerCooldownModifier( Float fCooldownModifier, Actor* Target );
		void ApplyPassiveBonus( Class* EffectClass, Float fModifier, Actor* Target, SFXModule_GameEffectManager* Manager );
		void ApplyGlobalBonus();
		void OnSquadMemberAdded( Pawn* Pawn );
		void OnPowersLoaded();
		void OnPowerRankIncreased();
		void InitializePowerScript();
	};

	class SFXPowerScript_SoldierPassive: public SFXPowerScript_PassivePower
	{
		DECLARE_PACKAGE_CLASS( SFXPowerScript_SoldierPassive, SFXPowerScript_PassivePower, SFXGameContent_Powers )

	public:

		void ApplyGlobalBonus( Float fHealthIncrease, Float fWeaponDamageIncrease, Float fStormTimeDilation, Float fPowerDamageIncrease, Float fPowerDurationIncrease, SFXPower_SoldierPassive* oPassivePower );
	};

	class SFXPower_SoldierPassive_Evolved1: public SFXPower_SoldierPassive
	{
		DECLARE_PACKAGE_CLASS( SFXPower_SoldierPassive_Evolved1, SFXPower_SoldierPassive, SFXGameContent_Powers )

	public:
	};

	class SFXPower_SoldierPassive_Evolved2: public SFXPower_SoldierPassive
	{
		DECLARE_PACKAGE_CLASS( SFXPower_SoldierPassive_Evolved2, SFXPower_SoldierPassive, SFXGameContent_Powers )

	public:
	};
}

#endif
